package cz.vse.adventura.po1715.xforv00_forejt.hra;

import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.pPOLOŽ;
import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.pPOLOŽpopis;
import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.zNEMA_PŘEDMĚT;


/*******************************************************************************
 * Instance třídy {@code PříkazPolož} představují příkaz, kterým hráč vyndá
 * předmět z batohu a položí do místnosti
 *
 * @author Vladimír Forejt
 */
public class PříkazPolož extends APříkaz {



//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================

    private final String POLOŽIL = "Položil(a) jste předmět: ";

//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     *
     */
    public PříkazPolož()
    {
        super(pPOLOŽ, pPOLOŽpopis);
    }



//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Položí předmět do místnosti
     *
     * @param název předmětu
     *
     * @return Text zprávy vypsané po provedení příkazu
     */
    @Override
    public String execute( String... parametry )
    {
        if (parametry.length == 0)  {
            return "Je třeba říct, který předmět se má položit.";//==========>
        }
        Batoh b = Batoh.getBatoh();
        String názevPředmětu = parametry [0];
        Předmět předmět = null;
        Místnost aktuální = Hra.getHra().getActualPlace();

        předmět = b.odeber(názevPředmětu);
        if (předmět == null) {
            return zNEMA_PŘEDMĚT;
        }
        aktuální.polož(předmět);
        return POLOŽIL + předmět.getName();
    }

//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//     /***************************************************************************
//      * Testovací metoda.
//      */
//     public static void test()
//     {
//         PříkazPolož instance = new PříkazPolož();
//     }
//     /** @param args Parametry příkazového řádku - nepoužívané. */
//     public static void main(String[] args)  {  test();  }
}
